1. Field of the Invention
This invention relates to computer systems, and more particularly to load balancing requests among nodes in a cluster environment.
2. Description of the Related Art
Distributed applications are often implemented as part of commercial and non-commercial business solutions for an enterprise. For example, a company may leverage the use of an enterprise application that includes various databases distributed across multiple computers. Applications of this type, which support E-commerce, typically support hundreds or thousands of sessions simultaneously during periods of peak utilization. For scalability and fault tolerance, the servers running such applications may be clustered.
FIG. 1 illustrates a networked computer system including a cluster 100, according to prior art. Clients 110 may be coupled to cluster 100 through network 120. Clients 110 may initiate sessions with application components running on nodes 140. Load balancer 130 may distribute session requests from clients 100 to nodes 140 to “balance” the total workload among the servers. In some cases, load balancing may amount to nothing more than round-robin assignment of new sessions to cluster members. In other cases, load balancer 130 may have access to data concerning the current workload of each node 140. When a new session request is received, load balancer 130 may use this data to determine which server has the “lightest” workload and assign the new session to that node. Regardless of the distribution algorithm used by the load balancer 130, the capacity of the application component(s) running on the nodes 140 of the cluster is greater that if it were limited to only a single node, and most architectures for cluster 100 include scalability to allow for increasing capacity by adding additional nodes 140 to the cluster.
Typically, a cluster load balancer is implemented as a hard-coded component of one of the cluster nodes. It may implement one or more load balancing algorithms such as random, round robin, etc. In many cases the included algorithm may not be the best choice for the particular condition that exist in a given cluster, but there may be no easy way to modify or replace the included algorithm. Also, the type of information that the load balancer has available to it may limit the type and/or performance of the included algorithm. For example, load-balancing algorithm based on node loading may only be able to accept estimates of operational loadings input when the load balancer is configured. There may be no provision in the load balancer to obtain real-time updates to these estimates, and no provision in the nodes to provide the supporting information.